Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Розробка та моделювання паралельного регістру та регістру зсуву

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Моделювання комп ютерних систем

Частина тексту файла

Міністерство освіти і науки України Національний університет «Львівська Політехніка» Кафедра ЕОМ / ЗВІТ до лабораторної роботи №5 з дисципліни «Моделювання комп’ютерних систем» на тему : Розробка та моделювання паралельного регістру та регістру зсуву Львів Мета роботи: Засвоїти принципи роботи паралельного та зсувного регістрів. Навчитися описувати синхронізовані процеси та використовувати циклічні оператори при описі поведінки об'єктів за допомогою VHDL. Теоретична частина У VHDL існує два оператора цикла: оператор циклу з умовою while ... loop ... оператор циклу з лічильником for ... loop ... . Оператор умовного циклу починається з логічної умови. Цикл повторюється до тих пір, поки виконується умова на початку циклу. Спочатку перевіряється умова, і, якщо вона істинна, виконуються оператори всередині циклу. Якщо ж умова хибна, цикл вважається закінченим і керування передається першому оператору, що знаходиться після циклу. Як правило, такі цикли використовуються для повторення виконання групи операторів до тих пір, поки сигнал або змінна відповідають вибраному критерію (наприклад, дорівнюють деякому значенню). Приклад використання умовного оператора циклу: process variable Count : integer := 0; begin wait until CLK = '1'; while Level = '1' loop Count := Count + 1; wait until CLK = '0'; end loop; end process; Цикл з лічильником не містить явної булевої умови. Замість цього задається дискретний лічильник із діапазоном значень і цикл повторюється до тих пір, поки цей лічильник не вийде за межі діапазона. Після кожної ітерації циклу лічильнику присвоюється наступне значення із заданого діапазону. Лічильник, який не обов'язково декларувати (його специфікація в заголовку циклу прирівнюється до декларації) всередині циклу вважається константою і може використовуватись в присвоєннях, індексах виразів, але не може бути змінене. Більше того, лічильник існує тільки всередині циклу, в якому він задекларований. Діапазон лічильника можна задавати не тільки в класичній формі вигляду from … to …. Він може бути також заданий як підтип або перечислимий тип. В такому випадку тільки (під)тип задається в якості діапазону лічильника. Приклад використання оператора циклу з лічильником: constant MSB : natural := 7; signal SourceBus : std_logic_vector (MSB downto 0); ReverseBus: process (SourceBus) variable ResultBus : std_logic_vector (MSB downto 0); begin for Cntr in 1 to MSB loop ResultBus(MSB - Cntr) := SourceBus(Cntr); end loop; end process ReverseBus; Код програми Паралельного восьмирозрядного регістра: library IEEE; use IEEE.std_logic_1164.all; entity parvreg is port( CLK : in STD_LOGIC; DATA_IN : in STD_LOGIC_VECTOR(7 DOWNTO 0); RE : in STD_LOGIC; WE : in STD_LOGIC; DATA_OUT : out STD_LOGIC_VECTOR (7 DOWNTO 0) ); end parvreg; architecture parvreg of parvreg is begin process(CLK,DATA_IN,RE,WE) variable reg:std_logic_vector(7 downto 0); begin if ( CLK'event and CLK = '1' and WE = '1' and RE = '0' ) then reg:= DATA_IN; elsif ( CLK'event and CLK = '1' and WE = '0' and RE = '1' ) then DATA_OUT <=reg; else DATA_OUT <="ZZZZZZZZ"; end if; end process; end parvreg; Рис.1 Діаграма роботи Паралельного восьмирозрядного регістра. Код програми Зсувного восьмирозрядного регістра: library IEEE; use IEEE.std_logic_1164.all; entity regzsyv is port( CLK : in STD_LOGIC; DATA_IN : in STD_LOGIC; RE : in STD_LOGIC; WE : in STD_LOGIC; DATA_OUT : out STD_LOGIC_VECtor( 7 downto 0) ); end regzsyv; architecture regzsyv of regzsyv is begin process ( CLK, WE,DATA_IN, RE ) variable reg : std_logic_vector ( 7 downto 0 ); begin if( CLK'event and CLK = '1' and WE = '1' and RE = '0' ) then for Counter in 6 downto 0 loop reg(Counter+1) := reg(Counter); end loop; reg(0):=DATA_IN; elsif ( CLK'event and CLK = '1' and WE = '0' and RE ='1' ) then DATA_OUT <= reg; else DATA_OUT <="ZZZZZZZZ"; end if; end process ; end regzsyv; Рис.2 Діаграма роботи Зсувного восьмирозрядног...
Антиботан аватар за замовчуванням
Med

26.03.2018 20:03

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини